home *** CD-ROM | disk | FTP | other *** search
- /* Data and function member declarations for the keyword list class.
-
- Copyright (C) 1989 Free Software Foundation, Inc.
- written by Douglas C. Schmidt (schmidt@ics.uci.edu)
-
- This file is part of GNU GPERF.
-
- GNU GPERF is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 1, or (at your option)
- any later version.
-
- GNU GPERF is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU GPERF; see the file COPYING. If not, write to
- the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
- /* The key word list is a useful abstraction that keeps track of
- various pieces of information that enable that fast generation
- of the Perfect.hash function. A Key_List is a singly-linked
- list of List_Nodes. */
-
- #ifndef _keylist_h
- #define _keylist_h
-
- #include <stdio.h>
- #include "listnode.h"
-
- typedef struct key_list
- {
- LIST_NODE * head; /* Points to the head of the linked list. */
- char * array_type; /* Pointer to the type for word list. */
- char * return_type; /* Pointer to return type for lookup function. */
- char * struct_tag; /* Shorthand for user-defined struct tag type. */
- char * include_src; /* C source code to be included verbatim. */
- int list_len; /* Length of head's Key_List, not counting duplicates. */
- int total_keys; /* Total number of keys, counting duplicates. */
- int max_key_len; /* Maximum length of the longest keyword. */
- int min_key_len; /* Minimum length of the shortest keyword. */
- bool occurrence_sort; /* True if sorting by occurrence. */
- bool hash_sort; /* True if sorting by hash value. */
- bool additional_code; /* True if any additional C code is included. */
- } KEY_LIST;
-
- extern void key_list_init( void );
- extern void key_list_destroy( void );
- extern void print_output( void );
- extern void read_keys( void );
- extern void reorder( void );
- extern int length( void );
- extern int max_key_length( void );
- extern void sort( void );
-
- extern KEY_LIST key_list;
-
- #endif /* _keylist_h */
-